স্প্রিং ওআরএম (Spring ORM) হল স্প্রিং ফ্রেমওয়ার্কের একটি মডিউল যা Java-তে ডাটাবেস অপারেশন সহজ করার জন্য ডিজাইন করা হয়েছে। এটি Object-Relational Mapping (ORM) টুল যেমন Hibernate, JPA ইত্যাদির সঙ্গে সংযোগ স্থাপন করতে সাহায্য করে। স্প্রিং ORM ডাটাবেস ম্যানেজমেন্টের জন্য boilerplate কোডের প্রয়োজনীয়তা হ্রাস করে এবং Spring Framework-এর অন্যান্য সুবিধার সঙ্গে ORM একীভূত করে।
Hibernate হল একটি জনপ্রিয় ORM ফ্রেমওয়ার্ক যা Java-এর জন্য ডাটাবেসের সঙ্গে Object Mapping সহজ করে। এটি SQL লেখার ঝামেলা কমায় এবং ডাটাবেসের সঙ্গে কাজ করার সময় Java Objects ব্যবহারের সুযোগ দেয়।
Hibernate এবং Spring ORM একত্রে ব্যবহার করতে গেলে নিম্নলিখিত ধাপগুলো অনুসরণ করতে হয়:
Hibernate এবং Spring ORM ব্যবহার করতে হলে প্রকল্পে প্রয়োজনীয় Maven ডিপেনডেন্সি যোগ করতে হয়:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>YOUR_SPRING_VERSION</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>YOUR_HIBERNATE_VERSION</version>
</dependency>
Hibernate Configuration সাধারণত hibernate.cfg.xml
ফাইলে সংরক্ষিত হয়। উদাহরণ:
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/your_database</property>
<property name="hibernate.connection.username">your_username</property>
<property name="hibernate.connection.password">your_password</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
</session-factory>
</hibernate-configuration>
Hibernate-এ SessionFactory
ডাটাবেস সংযোগ এবং সেশনের জীবনচক্র পরিচালনার জন্য ব্যবহৃত হয়। এটি একবার তৈরি হয় এবং অ্যাপ্লিকেশনের লাইফটাইম ধরে ব্যবহৃত হয়।
Spring-এ Hibernate SessionFactory Bean তৈরি করার জন্য নিচের কনফিগারেশন ব্যবহার করা হয়:
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan("com.example.model");
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
private Properties hibernateProperties() {
Properties properties = new Properties();
properties.put("hibernate.dialect", "org.hibernate.dialect.MySQL8Dialect");
properties.put("hibernate.show_sql", "true");
properties.put("hibernate.hbm2ddl.auto", "update");
return properties;
}
Transaction Management একটি গুরুত্বপূর্ণ ধারণা যেখানে একাধিক ডাটাবেস অপারেশন atomically কার্যকর হয়। যদি কোনো এক ধাপ ব্যর্থ হয়, তবে পুরো লেনদেনটি rollback হয়।
Spring-এ দুটি Transaction Management পদ্ধতি রয়েছে:
Spring ORM-এ সহজে Transaction পরিচালনার জন্য @Transactional
অ্যানোটেশন ব্যবহার করা হয়। উদাহরণ:
@Service
@Transactional
public class EmployeeService {
@Autowired
private EmployeeDao employeeDao;
public void saveEmployee(Employee employee) {
employeeDao.save(employee);
}
}
Spring-এ প্রোগ্রামেটিক পদ্ধতিতে ট্রানজেকশন পরিচালনার জন্য TransactionTemplate
ব্যবহার করা হয়:
@Autowired
private TransactionTemplate transactionTemplate;
public void saveEmployee(Employee employee) {
transactionTemplate.execute(status -> {
employeeDao.save(employee);
return null;
});
}
Spring ORM Hibernate Configuration, SessionFactory, এবং Transaction Management-এর মাধ্যমে ডাটাবেসের সঙ্গে সহজে কাজ করা যায়। এগুলো Spring Framework এবং Hibernate-এর শক্তিশালী সমন্বয় নিশ্চিত করে।
Read more